using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using FoundationLib.Ifc.Data;
using FoundationLib.Ifc.Domain;


namespace FoundationLib.Ifc.Data 
{
	/// <summary>
	/// Provides an interface for an event store
	/// </summary>
	public interface IEventStorage  
	{
		/// <summary>
		/// Gets all events for the aggregate with the given identifier
		/// </summary>
		/// <returns>All events found in the event store</returns>
		IAggregateEventStorage For<TAggregate>() where TAggregate : IEventSourcedAggregate;
	}

}